package xyz.cerberu.cet.spider.configuartion;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author β世界
 * Created on 14:04
 * @Description 爬虫资源配置的设置类
 */
@Configuration
public class SpiderConfig {
    @Value("${spider.proxy.host}")
    private String proxyHost;
    @Value("${spider.proxy.port}")
    private short proxyPort = -1;

    @Bean(value = "resourceSpiderConfig")
    public com.spider.core.SpiderConfig resourceSpiderConfig(){
        com.spider.core.SpiderConfig spiderConfig = com.spider.core.SpiderConfig.builder();
        // 不进行Https的请求
        spiderConfig.setHttps(true);
        // 爬取间隔为3秒
        spiderConfig.setInterval(3000);
        // 等待超时为30秒
        spiderConfig.setOutTime(60000);
        // 请求超时为30秒
        spiderConfig.setRequestTimeOut(60000);
        // 爬取的线程数最大为15个
        spiderConfig.setThreadNumber(7);
        // 检查运行环境不同的环境下使用不同的代理
        setProxy(spiderConfig);
        return spiderConfig;
    }

    @Bean(value = "animeSpiderConfig")
    public com.spider.core.SpiderConfig animeSpiderConfig(){
        com.spider.core.SpiderConfig spiderConfig = com.spider.core.SpiderConfig.builder();
        // 不进行Https的请求
        spiderConfig.setHttps(true);
        // 爬取间隔为3秒
        spiderConfig.setInterval(6000);
        // 等待超时为30秒
        spiderConfig.setOutTime(30000);
        // 请求超时为30秒
        spiderConfig.setRequestTimeOut(30000);
        // 爬取的线程数最大为15个
        spiderConfig.setThreadNumber(15);
        setProxy(spiderConfig);
        return spiderConfig;
    }

    /**
     * @author β世界 on 14:03 2021/3/4
     * 为爬虫设置代理
     * @param spiderConfig:
     **/
    private void setProxy(com.spider.core.SpiderConfig spiderConfig) {
        if(proxyHost != null && proxyPort != -1){
            spiderConfig.setProxyIP(proxyHost);
            spiderConfig.setProxyPort((int) proxyPort);
        }
    }

}
